package com.googlecode.imule.redundant;

import java.io.*;
import java.net.*;
import java.util.Date;

public class QuoteServerThread {
	
    protected DatagramSocket socket = null;
    protected BufferedReader in = null;
    protected boolean moreQuotes = true;
	
	public QuoteServerThread() throws IOException {
		this("QuoteServer");
	}
	
	public QuoteServerThread(String name) throws IOException {
		super();
		socket = new DatagramSocket(4445);
		
		try{
			in = new BufferedReader(new FileReader("one-liners.txt"));
		}catch (FileNotFoundException e){
            System.err.println("Could not open quote file. Serving time instead.");
		}
	}
	
	public void run(){
		
		while(moreQuotes){
			try{
				byte[] buf = new byte[256];
				
				DatagramPacket packet = new DatagramPacket(buf, buf.length);
				socket.receive(packet);
				
				String dString = null;
				if(in == null){
					dString = new Date().toString();
				}else{
					dString = getNextQuote();
				}
				buf = dString.getBytes();
				
				InetAddress address = packet.getAddress();
				int port = packet.getPort();
				packet = new DatagramPacket(buf, buf.length, address, port);
				socket.send(packet);
			}catch(IOException e){
				e.printStackTrace();
				moreQuotes = false;
			}
		}
		socket.close();
	}
	
	protected String getNextQuote() {
        String returnValue = null;
        try {
            if ((returnValue = in.readLine()) == null) {
                in.close();
		moreQuotes = false;
                returnValue = "No more quotes. Goodbye.";
            }
        } catch (IOException e) {
            returnValue = "IOException occurred in server.";
        }
        return returnValue;
    }

}
